function config = get_slam_config()
% 统一的SLAM配置参数
% 用于所有SLAM算法（对比运行和单独运行）

%% 时间参数
config.dt = 0.1;
config.total_time = 100;
config.steps = config.total_time / config.dt;

%% 噪声参数
% 过程噪声（机器人运动不确定性）
config.Q = diag([0.005, 0.005, 0.002]).^2;  % [x, y, theta]

% 观测噪声（激光雷达测量不确定性）
config.R = diag([0.15, 0.05]).^2;  % [距离, 角度]

%% 激光雷达参数
config.laser_range = 15;
config.laser_fov = 2 * pi;
config.num_beams = 120;
config.laser_noise = 0.1;

%% 初始状态
config.initial_state = [25; 25; 0];
config.initial_P = diag([0.01, 0.01, 0.001]).^2;  % 初始协方差

%% 轨迹参数
% 轨迹模式: true=路径点轨迹, false=动态避障轨迹
config.use_fixed_trajectory = true;

% 【路径点轨迹】固定路径点序列
config.waypoints = [
    25, 45, 45, 15, 15;   % x坐标
    25, 25, 45, 45, 15    % y坐标
];

% 【动态避障轨迹】运动控制参数（仅在use_fixed_trajectory=false时使用）
config.v_base = 1;           % 基础线速度
config.omega_base = 0.08;    % 基础角速度

%% FastSLAM特有参数
config.fastslam = struct();
config.fastslam.N_particles = 50;
config.fastslam.resample_threshold = 0.5;

%% Graph-SLAM特有参数
config.graph_slam = struct();
config.graph_slam.n_iterations = 20;  % 优化迭代次数

%% 显示参数
config.display = struct();
config.display.update_interval = 10;  % 可视化更新间隔（步数）
config.display.figure_position = [100, 100, 1200, 800];

%% 环境参数
config.map_size = [50, 50];

end

